package api

import (
	. "im/internal/common"
	"im/internal/model"
	"im/internal/service"

	"github.com/gin-gonic/gin"
)

// LoginForm 用户登录表
type LoginForm struct {
	// 用户名（示例值：admin）
	Username string `form:"username" binding:"required"`
	// 密码（示例值：admin）
	Password string `form:"password" binding:"required"`
}

// Login
// @Summary 用户登录
// @Description 用户登录
// @Tags user
// @Accept x-www-form-urlencoded
// @Produce json
// @Param username formData string true "账号"
// @Param password formData string true "密码"
// @Success 200 {object} Result{} "发送成功"
// @Router /user/login [post]
func Login(c *gin.Context) {
	form := LoginForm{}
	err := c.Bind(&form)
	if err != nil {
		Response(Error(err.Error()))
	}

	res, err := service.Login(form.Username, form.Password)
	if err != nil {
		Response(Error(err.Error()))
	}
	Response(Success("success", gin.H{
		"userinfo": res,
	}))
}

// Search
// @Summary 查找用户
// @Description 查找用户
// @Tags user
// @Accept json
// @Produce json
// @Param keyword query string true "支持user_number和nickname模糊搜索"
// @Success 200 {object} Result{} "发送成功"
// @Router /user/search [get]
func Search(c *gin.Context) {
	keyword := c.Query("keyword")
	if keyword == "" {
		Response(Error("keyword不能为空"))
	}
	auth := c.MustGet("auth").(*model.User)
	res, err := service.Search(auth.Id, keyword, []int{auth.Id})
	if err != nil {
		Response(Error(err.Error()))
	}
	Response(Success("success", gin.H{"users": res}))
}
